将变量传递给链接服务器查询 | 您所在的位置:网站首页 › sql server like中引用变量 › 将变量传递给链接服务器查询 |
将变量传递给链接服务器查询
项目06/20/2023
本文介绍如何将变量传递给链接服务器查询。 原始产品版本:SQL Server联机丛书 原始 KB 编号: 314520 摘要查询链接服务器时,经常执行使用 、 OPENROWSET或 OPENDATASOURCE 语句的OPENQUERY传递查询。 可以查看 SQL Server 联机丛书中的示例,了解如何使用预定义的 Transact-SQL 字符串执行此操作,但没有有关如何将变量传递给这些函数的示例。 本文提供三个示例,说明如何将变量传递给链接服务器查询。 若要将变量传递给传递函数之一,必须生成动态查询。 包含引号的任何数据都需要特定处理。 传递基本值如果基本 Transact-SQL 语句已知,但必须传入一个或多个特定值,请使用类似于以下示例的代码: DECLARE @TSQL varchar(8000), @VAR char(2) SELECT @VAR = 'CA' SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')' EXEC (@TSQL) 传递整个查询当必须传入整个 Transact-SQL 查询或链接服务器的名称 (或两者) 时,请使用类似于以下示例的代码: DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000) SET @LinkedServer = 'MyLinkedServer' SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ',''' SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')' EXEC (@OPENQUERY+@TSQL) 使用Sp_executesql存储过程若要避免使用多层引号,请使用类似于以下示例的代码: DECLARE @VAR char(2) SELECT @VAR = 'CA' EXEC MyLinkedServer.master.dbo.sp_executesql N'SELECT * FROM pubs.dbo.authors WHERE state = @state', N'@state char(2)', @VAR 另请参阅有关详细信息,请参阅下列主题: OPENROWSET (Transact-SQL) OPENQUERY (Transact - SQL) OPENDATASOURCE (Transact-SQL) sp_executesql (Transact-SQL) |
CopyRight 2018-2019 实验室设备网 版权所有 |